using System.Collections.Generic;
using Unity.Collections;

namespace Kayac.Statistics
{
	public static class Statistics
	{
		public static double GammaFunction(double x, int domainEstimateIteration, double epsilon, int minIntegrationIteration, int maxIntegrationIteration)
		{
			return 0.0;
		}

		public static double CalcDistributionAverage(IFunction func, int domainEstimateIteration, double epsilon, int minIntegrationIteration, int maxIntegrationIteration)
		{
			return 0.0;
		}

		public static double CalcDistributionAverage(IFunction func, double xMin, double xMax, double epsilon, int minIntegrationIteration, int maxIntegrationIteration)
		{
			return 0.0;
		}

		public static double CalcDistributionSqAverage(IFunction func, int domainEstimateIteration, double epsilon, int minIntegrationIteration, int maxIntegrationIteration)
		{
			return 0.0;
		}

		public static double CalcDistributionSqAverage(IFunction func, double xMin, double xMax, double epsilon, int minIntegrationIteration, int maxIntegrationIteration)
		{
			return 0.0;
		}

		public static double CalcDistributionVariance(out double avg, IFunction func, int domainEstimateIteration, double epsilon, int minIntegrationIteration, int maxIntegrationIteration)
		{
			avg = default(double);
			return 0.0;
		}

		public static double IntegrateDistribution(IFunction func, int domainEstimateIteration, double epsilon, int minIntegrationIteration, int maxIntegrationIteration)
		{
			return 0.0;
		}

		public static void EstimateDistributionDomain(out double minX, out double maxX, IFunction func, int maxIteration, double epsilon)
		{
			minX = default(double);
			maxX = default(double);
		}

		public static void CalcProbabilityDensityAmounts(out double area, out double xAverage, out double xVariance, IFunction func, double xMin, double xMax, long sampleCount)
		{
			area = default(double);
			xAverage = default(double);
			xVariance = default(double);
		}

		public static void SampleProbabilityDensityAmounts(out float xAverage, out float xVariance, NativeArray<float> samples, int offset, int count)
		{
			xAverage = default(float);
			xVariance = default(float);
		}

		public static void SampleProbabilityDensityAmounts(out double xMin, out double xMax, out double xAverage, out double xVariance, IDistribution dist, Rand64 random, long sampleCount)
		{
			xMin = default(double);
			xMax = default(double);
			xAverage = default(double);
			xVariance = default(double);
		}

		public static double CalcSampledAverage(IDistribution dist, Rand64 random, long sampleCount)
		{
			return 0.0;
		}

		public static void SampleProbabilityDensityAmounts(out double xAverage, out double xVariance, IDistribution dist, Rand64 random, long sampleCount)
		{
			xAverage = default(double);
			xVariance = default(double);
		}

		public static void DumpFunctions(IFunction func1, IFunction func2, double xMin, double xMax, int n, string filaname)
		{
		}

		public static void DumpPositiveDistributionsToCsv(IReadOnlyList<IFunction> funcs, int sampleCount, double step, string filaname, double epsilon)
		{
		}
	}
}
